{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{{{{{{{{{&&&&&&&&&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&{{{{{{{{&&&&&&&&&&&&&&&&{{{{{{{{{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{&&&&&&&&{{{{{{{{{{{{{{{{{{{{{{{{